// #include <bits/stdc++.h>
// using namespace std;
// long a[200001];
// long N, C, ans;
// int main()
// {
//     cin >> N >> C;
//     for (int i = 1; i <= N; i++)
//     {
//         cin >> a[i];
//     }
//     sort(a + 1, a + N + 1);
//     for (int i = 1; i <= N; i++)
//     {
//         ans += ((upper_bound(a + 1, a + N + 1, a[i] + C) - a) - (lower_bound(a + 1, a + N + 1, a[i] + C) - a));
//     }
//     cout << ans;
//     return 0;
// }

// 92分
#include <iostream>
using namespace std;
#include <algorithm>
const int N = 200000;
int n, m, a[N];

// 二分查找
int find(int x)
{
    int l = 0, r = n - 1;

    // 左端点
    while (l < r)
    {
        int mid = l + (r - l) / 2;
        if (a[mid] < x)
        {
            l = mid + 1;
        }
        else
        {
            r = mid;
        }
    }

    int begin = 0;
    if (x == a[l])
    {
        begin = l;
    }
    else
    {
        return 0;
    }

    // 右端点
    r = n - 1;
    while (l < r)
    {
        int mid = l + (r - l + 1) / 2;
        if (a[mid] > x)
        {
            r = mid - 1;
        }
        else
        {
            l = mid;
        }
    }

    return (r - begin) > 0 ? r - begin + 1 : 1;
}

int main()
{

    // 输入 n 和 m
    cin >> n >> m;

    // 输入数组 a
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    sort(a, a + n);
    // 计数
    int count = 0;

    for (int i = 0; i < n; i++)
    {
        int A = a[i] + m;
        int num = find(A);

        count += num;
    }

    cout << count;

    return 0;
}